<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        window.onload = function () {
            const btns = document.querySelectorAll("button")
            btns[0].onclick = function () {
                alert("事件1执行")
                /* 
                    需求：执行一次后取消
                    实现思路：可以把该元素的属性设置为null
                 */
                 btns[0].onclick = null;
            }

            /* 
                这种基于监听器的注册方式跟基于属性的注册方式本质上是不一样的
                基于监听器的注册方式不会改变 onclick 属性
             */
            btns[1].addEventListener("click", func1)
            // {
                // alert("通过监听器注册的事件")
                // console.dir(this);
                // btns[1].onclick = null;
                // this.removeEventListener("click",)       //这种函数是匿名函数，无法传到remove的参数里面
          //  })

            function func1(){
                alert("通过监听器注册的事件")
                btns[1].removeEventListener("click",func1)
            }
        }
    </script>
</head>

<body>
    <button>事件1</button>
    <button>事件2</button>
</body>

</html>